/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Prolog;

/**
 *
 * @author Usuario
 */
public class Resultado {

    //Tipos de resultado
    public static int noInterpretable = -1;
    public static int movInvalido = 1;
    public static int movValido = 2;
    public static int finPartida = 4;

    //Resultado
    int tipoResul = -1;

    //Valores obtenidos para movValido
    int iniX = -1;
    int iniY = -1;
    int finX = -1;
    int finY = -1;

    //Valores obtenidos por finPartida
    String resulPartida = "";

    //Valores obtenidos por enroque
    boolean negras = false;
    boolean largo = false;
    
    boolean captura = false;

    public Resultado() {
        this.tipoResul = Resultado.noInterpretable;
    }

    public Resultado(int tipoResul) {
        this.tipoResul = tipoResul;
    }

    /*
     * Resultado de movimiento Valido o de Hint
     */
    public Resultado(int tipoResul, int iniX, int iniY, int finX, int finY, boolean captura) {
        this.tipoResul = tipoResul;
        this.iniX = iniX;
        this.iniY = iniY;
        this.finX = finX;
        this.finY = finY;
        this.captura = captura;
    }

    /*
     * Resultado de Fin de Partida
     */
    public Resultado(String resulPartida){
        this.tipoResul = Resultado.finPartida;
        this.resulPartida = resulPartida;
    }

    public static int getFinPartida() {
        return finPartida;
    }

    public static void setFinPartida(int finPartida) {
        Resultado.finPartida = finPartida;
    }

    public int getFinX() {
        return finX;
    }

    public void setFinX(int finX) {
        this.finX = finX;
    }

    public int getFinY() {
        return finY;
    }

    public void setFinY(int finY) {
        this.finY = finY;
    }

    public int getIniX() {
        return iniX;
    }

    public void setIniX(int iniX) {
        this.iniX = iniX;
    }

    public int getIniY() {
        return iniY;
    }

    public void setIniY(int iniY) {
        this.iniY = iniY;
    }

    public static int getMovInvalido() {
        return movInvalido;
    }

    public static void setMovInvalido(int movInvalido) {
        Resultado.movInvalido = movInvalido;
    }

    public static int getMovValido() {
        return movValido;
    }

    public static void setMovValido(int movValido) {
        Resultado.movValido = movValido;
    }

    public boolean isNegras() {
        return negras;
    }

    public void setNegras(boolean negras) {
        this.negras = negras;
    }

    public String getResulPartida() {
        return resulPartida;
    }

    public void setResulPartida(String resulPartida) {
        this.resulPartida = resulPartida;
    }

    public int getTipoResul() {
        return tipoResul;
    }

    public void setTipoResul(int tipoResul) {
        this.tipoResul = tipoResul;
    }

    public boolean isCaptura() {
        return captura;
    }

    public void setCaptura(boolean captura) {
        this.captura = captura;
    }

    
    @Override
    public boolean equals(Object ob){
        if (this == ob) {
            return true;
        }
        if (ob instanceof Resultado) {
            Resultado r = (Resultado) ob;
            if(r.captura != this.captura)
                return false;
            
            if(r.largo != this.largo)
                return false;
            
            if(r.negras != this.negras)
                return false;
            
            if(r.finX != this.finX)
                return false;
            
            if(r.finY != this.finY)
                return false;
            
            if(r.iniX != this.iniX)
                return false;
            
            if(r.iniY != this.iniY)
                return false;
            
            if(r.tipoResul != this.tipoResul)
                return false;
            
            if(!r.resulPartida.equalsIgnoreCase(this.resulPartida))
                return false;
            
            return true;
        }
        return false;
    }
    
    @Override
    public String toString(){
        String s = "";
        s += this.captura + " ";

        s += this.largo + " ";

        s += this.negras + " ";

        s += this.iniX + " ";

        s += this.iniY + " ";
        
        s += this.finX + " ";

        s += this.finY + " ";

        s += this.tipoResul + " ";

        s += this.resulPartida + " ";

        return s;
    }

}
